﻿using System;
using System.Collections.Generic;
using System.ComponentModel; 
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ADV_Evaluator;
using ADV_Evaluator.Data;
using ADV_Evaluator.Command;


namespace ADV_Editor.CommandDialog {

    /// <summary>
    /// 「ラベルの定義」若しくは「ラベルに飛ぶ」コマンドのダイアログ
    /// </summary>
    /// <remarks>名前ぐらいしか違わないのでこの２つで共用する。</remarks>
    partial class LabelDialog : CommandDialogBase {

        /// <summary>
        /// コマンド名。コンストラクタで指定した値をCommandプロパティで返す。
        /// </summary>
        CommandName name;

        /// <summary>
        /// 空の状態からはじめるコンストラクタ
        /// </summary>
        /// <param name="name"></param>
        public LabelDialog(CommandName name) {
            InitializeComponent();
            this.name = name;
            this.Text = name.ToString();
        }

        /// <summary>
        /// 文字列を設定した状態ではじめるコンストラクタ
        /// </summary>
        /// <param name="name"></param>
        /// <param name="param">属性</param>
        public LabelDialog(CommandName name, LabelParams param) : this(name) {
            textBox.Text = param.Name;
        }

        /// <summary>
        /// テキストボックスの値が書き換わったとき
        /// </summary>
        private void textBox_TextChanged(object sender, EventArgs e) {
            button_OK.Enabled = (textBox.Text.Length > 0);
        }

        /// <summary>
        /// 入力された文章をコマンド化したもの
        /// </summary>
        public override CommandListData Command {
            get {
                LabelParams param;
                param.Name = textBox.Text;
                return new CommandListData(name, param); 
            }
        }

        #region ヘルプ
        /// <summary>
        /// OKボタンのヘルプ
        /// </summary>
        private void button_OK_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "このダイアログを閉じて、コマンドを追加します。");
        }
        /// <summary>
        /// キャンセルボタンのヘルプ
        /// </summary>
        private void button_Cancel_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "変更内容を保存せずにこのダイアログを閉じます。");
        }
        /// <summary>
        /// ラベル名のヘルプ
        /// </summary>
        private void textBox_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "ラベルの名前を指定します。");
        }
        #endregion

    }
}